# 列表类型 应用场景：存储相同类型的数据，循环体内执行相同的操作
# 1、对应索引值，索引从0开始。作用：按位置记录多个值
li = [12, 3.1, 'aaa', ['bbb', 'ccc']]
print(li)  # 输出整个列表
print(li[1])  # 输出列表第二个值
print(li[3][1]) # 输出子列表第二个值（嵌套列表取值）

# 2、嵌套取值应用
student_info = [
    ['ren', 18, ['foot']],
    ['shuo', 19, ['play', 'sleep']]
]
# 取出第一个学生第一个爱好，foot
print(student_info[0][2][0])

# 列表常用方法 append、count、insert、reverse、
# clear、extend、pop、sort、copy、index、remove
# 1.取值和取索引
print(li[0])  # 取值
print(li.index('aaa'))  # 取索引，不在列表中会报错

# 2.修改
li[1] = '任硕'

# 3、增加 append insert extend
li.append("王五")  # 向列表末尾增加
li.insert(1, '对的') # 向指定索引处增加
t1 = [12, 45]
li.extend(t1)  # extend可以将一个列表加到另一个列表末尾
print(li)

# 4.删除 pop、remove、del
li.remove('王五')  # remove删除指定数据
li.pop()  # pop默认删除列表最后一个元素删除
li.pop(2)  # 传入索引，删除指定索引的方法
# li.clear()  clear可以清除全部数据
# del li[1]  # 将变量从内存中删除，少用
print(li)

# 列表统计方法
len = len(li)  # 列表长度len
print(len)
# count方法统计某一字段在列表中出现次数
count = li.count(12)
print(count)

# 翻转和排序 sort、reverse
li1 = [3, 4, 1, 5]
li1.sort()  # 升序
print(li1)
li1.sort(reverse=True)  # 降序
print(li1)
li1.reverse()  # 逆序
print(li1)

# 列表的迭代遍历 for、iteration
for i in li:
    print("列表值为 %s" %i)


